
<HTML>
<HEAD>
<TITLE>Module Details </TITLE>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<LINK rel="stylesheet" type="text/css" href="../css/u-blue-sub.css">
</HEAD>
<BODY>


	<img src="http://www.nottingham.ac.uk/icons/corporate/modules-sub.gif" alt="Catalogue of Modules, University of Nottingham">
	<H2>G52AFP Advanced Functional Programming<BR><font size=-1>(Last Updated:03 April 2009)</font>
	</H2>

<h3>Year &nbsp;09/10</h3>
<p><b>Total Credits:&nbsp;</b>10
<p><b>Level:&nbsp;</b>Level 2
<p><b>Target Students:&nbsp; </b>Second year undergraduate students in the School of Computer Science and in the School of Mathematics.&nbsp;<I> Available to JYA/Erasmus students.</I>
<p><b>Taught Semesters:<center></b><TABLE  border='0' CELLSPACING ='3' CELLPADDING='2'><TR><TH>Semester</TH><TH>Assessment</TH></TR><TR><TD>Spring&nbsp;</TD><TD>Assessed by end of Spring Semester&nbsp;</TD></TR></TABLE></center>

<p><b>Prerequisites:&nbsp;</b><p><center><TABLE border='0' CELLSPACING ='3' CELLPADDING='2' ><TR><TH NOWRAP>Mnem</TH><TH>Title</TH></TR><TR><TD ><A HREF='moduledetails.asp?crs_id=007252&year_id=000109'>G51FUN</A>&nbsp;</TD><TD>Functional Programming&nbsp;</TD></TR></TABLE></center></center><P><B>Corequisites:&nbsp;&nbsp;</B>None.</center>

<p><b>Summary of Content: &nbsp;</b>Functional languages represent the leading edge of programming language design, and the primary setting in which new programming concepts are introduced and studied. This module builds upon the introductory module G51FUN Functional Programming, by focussing on a number of more advanced topics in functional programming, including aspects of recent and current research. The precise topics covered will vary from year to year, but will include topics such as the following:
<li>Programming with effects (monads, state, exceptions, etc);
<li>Reasoning about programs (proof, transformation and calculation);
<li>Control flow (continuations, defunctionalization and machines);
<li>Advanced libraries (domain-specific embedded languages);
<li>Improving efficiency (tupling, accumulation and fusion);
<li>Type systems (inference, classes and novel features);
<li>Functional pearls (short, elegant examples).
<br><br>

<!--JB Feb 05 - DisplayWebLinks moved to here-->
<P><B>Method and Frequency of Class: </B><BR><CENTER><TABLE border='0' CELLSPACING ='3' CELLPADDING='2' ><TR><TH  NOWRAP>Activity</TH><TH NOWRAP>Number of sessions</TH><TH NOWRAP>Duration of a session</TH></TR><TR><TD >Lecture&nbsp;</TD><TD align='left'>2 per week</TD><TD align='left'>1 hour </TD></TR><TR><TD >Computing&nbsp;</TD><TD align='left'>1 per week</TD><TD align='left'>2 hours </TD></TR></TABLE></CENTER><BR>Activities may take place every teaching week of the Semester or only in specified weeks.  It is usually specified above  if an activity only takes place in some weeks of a Semester<BR>
<p><b>Method of Assessment:&nbsp; </b><center><TABLE border='0' CELLSPACING ='3' CELLPADDING='2' ><TR><TH NOWRAP>Assessment Type</TH><TH>Weight</TH><TH>Requirements</TH></TR><TR><TD >Exam 1&nbsp;</TD><TD align='center'>75&nbsp;</TD><TD width='40%' align='center'>2 hr written examination&nbsp;</TD></TR><TR><TD >Coursework 1&nbsp;</TD><TD align='center'>10&nbsp;</TD><TD width='40%' align='center'>Programming exercise&nbsp;</TD></TR><TR><TD >Coursework 2&nbsp;</TD><TD align='center'>15&nbsp;</TD><TD width='40%' align='center'>Programming exercise&nbsp;</TD></TR></TABLE></center>
<p><b>Convenor:&nbsp;</b><BR>

Dr G Hutton<BR>

<p><b>Education Aims: &nbsp;</b>To provide a sound basis in a range of advanced topics in functional programming, including aspects of recent and current research. More generally, the module aims to teach fundamental principles and techniques that can profitably be applied in any programming language, whether it be functional or otherwise.

<p><b>Learning Outcomes: &nbsp;</b><b>Knowledge and Understanding:</b> 
A sound understanding of the theory and practice of advanced functional programming.

<b>Intellectual Skills:</b>
The ability to apply mathematical practices and tools .

<b>Professional Skills: </b>
The ability to write and reason about advanced functional programs.

<b>Transferrable Skills:</b>
The ability to use functional techniques to solve problems.
<p><b>Offering School:&nbsp; </b>Computer Science

<!--JB Feb 05 - DisplayWebLinks moved from here-->

<BR><BR>
<HR width='85%'><p>Use the <strong>Back</strong> facility of your browser to return to the previous page.<p><a href='../asp/main_search.asp'><img src='http://www.nottingham.ac.uk/icons/corporate/modules-button.gif' alt='Module Catalogue' border='0'></a> Search for another module <p><a href='http://www.nottingham.ac.uk/' target='_top'><img src='..\images\uon_welcome.gif' alt='[UoN Welcome Page]' border='0'></a> Return to The University of Nottingham Welcome Page
<p>&nbsp;</p>
</body>
</html>
